//
// File: uav_track_ugv.h
//
// Code generated for Simulink model 'uav_track_ugv'.
//
// Model version                  : 1.6
// Simulink Coder version         : 9.7 (R2022a) 13-Nov-2021
// C/C++ source code generated on : Mon May  6 21:07:03 2024
//
// Target selection: ert.tlc
// Embedded hardware selection: Generic->Unspecified (assume 32-bit Generic)
// Code generation objectives: Unspecified
// Validation result: Not run
//
#ifndef RTW_HEADER_uav_track_ugv_h_
#define RTW_HEADER_uav_track_ugv_h_
#include "rtwtypes.h"
#include "slros_initialize.h"
#include "uav_track_ugv_types.h"

extern "C" {

#include "rtGetInf.h"

}
  extern "C"
{

#include "rt_nonfinite.h"

}

#include <stddef.h>

// Macros for accessing real-time model data structure
#ifndef rtmGetErrorStatus
#define rtmGetErrorStatus(rtm)         ((rtm)->errorStatus)
#endif

#ifndef rtmSetErrorStatus
#define rtmSetErrorStatus(rtm, val)    ((rtm)->errorStatus = (val))
#endif

// Block signals (default storage)
struct B_uav_track_ugv_T {
  SL_Bus_uav_track_ugv_mavros_msgs_PositionTarget BusAssignment1;// '<Root>/Bus Assignment1' 
  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped In1;// '<S61>/In1'
  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped In1_i;// '<S60>/In1'
  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped b_varargout_2;
  SL_Bus_uav_track_ugv_geometry_msgs_Pose BusAssignment;// '<Root>/Bus Assignment' 
  char_T b_zeroDelimTopic[32];
  real_T Output;                       // '<S1>/Output'
  real_T Output_k;                     // '<S2>/Output'
  real_T rtb_Sum1_m;
  real_T rtb_Sum_c;
  real_T rtb_Saturation_k;
  real_T rtb_IntegralGain_c;
};

// Block states (default storage) for system '<Root>'
struct DW_uav_track_ugv_T {
  ros_slroscpp_internal_block_P_T obj; // '<S7>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_h;// '<S6>/SinkBlock'
  ros_slroscpp_internal_block_S_T obj_e;// '<S9>/SourceBlock'
  ros_slroscpp_internal_block_S_T obj_p;// '<S8>/SourceBlock'
  real_T Integrator_DSTATE[2];         // '<S43>/Integrator'
  real_T Filter_DSTATE[2];             // '<S38>/Filter'
  real_T NextOutput;                   // '<S1>/White Noise'
  real_T NextOutput_j;                 // '<S2>/White Noise'
  uint32_T RandSeed;                   // '<S1>/White Noise'
  uint32_T RandSeed_m;                 // '<S2>/White Noise'
};

// Parameters (default storage)
struct P_uav_track_ugv_T_ {
  real_T BandLimitedWhiteNoise_Cov; // Mask Parameter: BandLimitedWhiteNoise_Cov
                                       //  Referenced by: '<S1>/Output'

  real_T BandLimitedWhiteNoise1_Cov;
                                   // Mask Parameter: BandLimitedWhiteNoise1_Cov
                                      //  Referenced by: '<S2>/Output'

  real_T DiscretePIDController_D;     // Mask Parameter: DiscretePIDController_D
                                         //  Referenced by: '<S37>/Derivative Gain'

  real_T DiscretePIDController_I;     // Mask Parameter: DiscretePIDController_I
                                         //  Referenced by: '<S40>/Integral Gain'

  real_T DiscretePIDController_InitialCo;
                              // Mask Parameter: DiscretePIDController_InitialCo
                                 //  Referenced by: '<S38>/Filter'

  real_T DiscretePIDController_Initial_e;
                              // Mask Parameter: DiscretePIDController_Initial_e
                                 //  Referenced by: '<S43>/Integrator'

  real_T DiscretePIDController_LowerSatu;
                              // Mask Parameter: DiscretePIDController_LowerSatu
                                 //  Referenced by:
                                 //    '<S50>/Saturation'
                                 //    '<S36>/DeadZone'

  real_T DiscretePIDController_N;     // Mask Parameter: DiscretePIDController_N
                                         //  Referenced by: '<S46>/Filter Coefficient'

  real_T DiscretePIDController_P;     // Mask Parameter: DiscretePIDController_P
                                         //  Referenced by: '<S48>/Proportional Gain'

  real_T DiscretePIDController_UpperSatu;
                              // Mask Parameter: DiscretePIDController_UpperSatu
                                 //  Referenced by:
                                 //    '<S50>/Saturation'
                                 //    '<S36>/DeadZone'

  real_T BandLimitedWhiteNoise_seed;
                                   // Mask Parameter: BandLimitedWhiteNoise_seed
                                      //  Referenced by: '<S1>/White Noise'

  real_T BandLimitedWhiteNoise1_seed;
                                  // Mask Parameter: BandLimitedWhiteNoise1_seed
                                     //  Referenced by: '<S2>/White Noise'

  SL_Bus_uav_track_ugv_mavros_msgs_PositionTarget Constant_Value;// Computed Parameter: Constant_Value
                                                                    //  Referenced by: '<S4>/Constant'

  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped Out1_Y0;// Computed Parameter: Out1_Y0
                                                            //  Referenced by: '<S60>/Out1'

  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped Constant_Value_h;// Computed Parameter: Constant_Value_h
                                                                     //  Referenced by: '<S8>/Constant'

  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped Out1_Y0_l;// Computed Parameter: Out1_Y0_l
                                                              //  Referenced by: '<S61>/Out1'

  SL_Bus_uav_track_ugv_geometry_msgs_PoseStamped Constant_Value_j;// Computed Parameter: Constant_Value_j
                                                                     //  Referenced by: '<S9>/Constant'

  SL_Bus_uav_track_ugv_geometry_msgs_Pose Constant_Value_f;// Computed Parameter: Constant_Value_f
                                                              //  Referenced by: '<S3>/Constant'

  real_T Constant1_Value;              // Expression: 0
                                          //  Referenced by: '<S34>/Constant1'

  real_T Integrator_gainval;           // Computed Parameter: Integrator_gainval
                                          //  Referenced by: '<S43>/Integrator'

  real_T WhiteNoise_Mean;              // Expression: 0
                                          //  Referenced by: '<S1>/White Noise'

  real_T WhiteNoise_StdDev;            // Computed Parameter: WhiteNoise_StdDev
                                          //  Referenced by: '<S1>/White Noise'

  real_T WhiteNoise_Mean_p;            // Expression: 0
                                          //  Referenced by: '<S2>/White Noise'

  real_T WhiteNoise_StdDev_m;         // Computed Parameter: WhiteNoise_StdDev_m
                                         //  Referenced by: '<S2>/White Noise'

  real_T Filter_gainval;               // Computed Parameter: Filter_gainval
                                          //  Referenced by: '<S38>/Filter'

  real_T Constant5_Value;              // Expression: 0
                                          //  Referenced by: '<S34>/Constant5'

  real_T Constant_Value_a;             // Expression: 2
                                          //  Referenced by: '<Root>/Constant'

  uint16_T Constant4_Value;            // Expression: 0b111111100011
                                          //  Referenced by: '<Root>/Constant4'

  int8_T Constant_Value_jg;            // Computed Parameter: Constant_Value_jg
                                          //  Referenced by: '<S34>/Constant'

  int8_T Constant2_Value;              // Computed Parameter: Constant2_Value
                                          //  Referenced by: '<S34>/Constant2'

  int8_T Constant3_Value;              // Computed Parameter: Constant3_Value
                                          //  Referenced by: '<S34>/Constant3'

  int8_T Constant4_Value_c;            // Computed Parameter: Constant4_Value_c
                                          //  Referenced by: '<S34>/Constant4'

  uint8_T Constant3_Value_a;           // Computed Parameter: Constant3_Value_a
                                          //  Referenced by: '<Root>/Constant3'

};

// Real-time Model Data Structure
struct tag_RTM_uav_track_ugv_T {
  const char_T * volatile errorStatus;

  //
  //  Timing:
  //  The following substructure contains information regarding
  //  the timing information for the model.

  struct {
    struct {
      uint8_T TID[2];
    } TaskCounters;
  } Timing;
};

// Block parameters (default storage)
#ifdef __cplusplus

extern "C" {

#endif

  extern P_uav_track_ugv_T uav_track_ugv_P;

#ifdef __cplusplus

}
#endif

// Block signals (default storage)
#ifdef __cplusplus

extern "C" {

#endif

  extern struct B_uav_track_ugv_T uav_track_ugv_B;

#ifdef __cplusplus

}
#endif

// Block states (default storage)
extern struct DW_uav_track_ugv_T uav_track_ugv_DW;

#ifdef __cplusplus

extern "C" {

#endif

  // Model entry point functions
  extern void uav_track_ugv_initialize(void);
  extern void uav_track_ugv_step(void);
  extern void uav_track_ugv_terminate(void);

#ifdef __cplusplus

}
#endif

// Real-time Model object
#ifdef __cplusplus

extern "C" {

#endif

  extern RT_MODEL_uav_track_ugv_T *const uav_track_ugv_M;

#ifdef __cplusplus

}
#endif

//-
//  The generated code includes comments that allow you to trace directly
//  back to the appropriate location in the model.  The basic format
//  is <system>/block_name, where system is the system number (uniquely
//  assigned by Simulink) and block_name is the name of the block.
//
//  Use the MATLAB hilite_system command to trace the generated code back
//  to the model.  For example,
//
//  hilite_system('<S3>')    - opens system 3
//  hilite_system('<S3>/Kp') - opens and selects block Kp which resides in S3
//
//  Here is the system hierarchy for this model
//
//  '<Root>' : 'uav_track_ugv'
//  '<S1>'   : 'uav_track_ugv/Band-Limited White Noise'
//  '<S2>'   : 'uav_track_ugv/Band-Limited White Noise1'
//  '<S3>'   : 'uav_track_ugv/Blank Message'
//  '<S4>'   : 'uav_track_ugv/Blank Message1'
//  '<S5>'   : 'uav_track_ugv/Discrete PID Controller'
//  '<S6>'   : 'uav_track_ugv/Publish1'
//  '<S7>'   : 'uav_track_ugv/Publish2'
//  '<S8>'   : 'uav_track_ugv/Subscribe'
//  '<S9>'   : 'uav_track_ugv/Subscribe1'
//  '<S10>'  : 'uav_track_ugv/Discrete PID Controller/Anti-windup'
//  '<S11>'  : 'uav_track_ugv/Discrete PID Controller/D Gain'
//  '<S12>'  : 'uav_track_ugv/Discrete PID Controller/Filter'
//  '<S13>'  : 'uav_track_ugv/Discrete PID Controller/Filter ICs'
//  '<S14>'  : 'uav_track_ugv/Discrete PID Controller/I Gain'
//  '<S15>'  : 'uav_track_ugv/Discrete PID Controller/Ideal P Gain'
//  '<S16>'  : 'uav_track_ugv/Discrete PID Controller/Ideal P Gain Fdbk'
//  '<S17>'  : 'uav_track_ugv/Discrete PID Controller/Integrator'
//  '<S18>'  : 'uav_track_ugv/Discrete PID Controller/Integrator ICs'
//  '<S19>'  : 'uav_track_ugv/Discrete PID Controller/N Copy'
//  '<S20>'  : 'uav_track_ugv/Discrete PID Controller/N Gain'
//  '<S21>'  : 'uav_track_ugv/Discrete PID Controller/P Copy'
//  '<S22>'  : 'uav_track_ugv/Discrete PID Controller/Parallel P Gain'
//  '<S23>'  : 'uav_track_ugv/Discrete PID Controller/Reset Signal'
//  '<S24>'  : 'uav_track_ugv/Discrete PID Controller/Saturation'
//  '<S25>'  : 'uav_track_ugv/Discrete PID Controller/Saturation Fdbk'
//  '<S26>'  : 'uav_track_ugv/Discrete PID Controller/Sum'
//  '<S27>'  : 'uav_track_ugv/Discrete PID Controller/Sum Fdbk'
//  '<S28>'  : 'uav_track_ugv/Discrete PID Controller/Tracking Mode'
//  '<S29>'  : 'uav_track_ugv/Discrete PID Controller/Tracking Mode Sum'
//  '<S30>'  : 'uav_track_ugv/Discrete PID Controller/Tsamp - Integral'
//  '<S31>'  : 'uav_track_ugv/Discrete PID Controller/Tsamp - Ngain'
//  '<S32>'  : 'uav_track_ugv/Discrete PID Controller/postSat Signal'
//  '<S33>'  : 'uav_track_ugv/Discrete PID Controller/preSat Signal'
//  '<S34>'  : 'uav_track_ugv/Discrete PID Controller/Anti-windup/Disc. Clamping Parallel'
//  '<S35>'  : 'uav_track_ugv/Discrete PID Controller/Anti-windup/Disc. Clamping Parallel/Dead Zone'
//  '<S36>'  : 'uav_track_ugv/Discrete PID Controller/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
//  '<S37>'  : 'uav_track_ugv/Discrete PID Controller/D Gain/Internal Parameters'
//  '<S38>'  : 'uav_track_ugv/Discrete PID Controller/Filter/Disc. Forward Euler Filter'
//  '<S39>'  : 'uav_track_ugv/Discrete PID Controller/Filter ICs/Internal IC - Filter'
//  '<S40>'  : 'uav_track_ugv/Discrete PID Controller/I Gain/Internal Parameters'
//  '<S41>'  : 'uav_track_ugv/Discrete PID Controller/Ideal P Gain/Passthrough'
//  '<S42>'  : 'uav_track_ugv/Discrete PID Controller/Ideal P Gain Fdbk/Disabled'
//  '<S43>'  : 'uav_track_ugv/Discrete PID Controller/Integrator/Discrete'
//  '<S44>'  : 'uav_track_ugv/Discrete PID Controller/Integrator ICs/Internal IC'
//  '<S45>'  : 'uav_track_ugv/Discrete PID Controller/N Copy/Disabled'
//  '<S46>'  : 'uav_track_ugv/Discrete PID Controller/N Gain/Internal Parameters'
//  '<S47>'  : 'uav_track_ugv/Discrete PID Controller/P Copy/Disabled'
//  '<S48>'  : 'uav_track_ugv/Discrete PID Controller/Parallel P Gain/Internal Parameters'
//  '<S49>'  : 'uav_track_ugv/Discrete PID Controller/Reset Signal/Disabled'
//  '<S50>'  : 'uav_track_ugv/Discrete PID Controller/Saturation/Enabled'
//  '<S51>'  : 'uav_track_ugv/Discrete PID Controller/Saturation Fdbk/Disabled'
//  '<S52>'  : 'uav_track_ugv/Discrete PID Controller/Sum/Sum_PID'
//  '<S53>'  : 'uav_track_ugv/Discrete PID Controller/Sum Fdbk/Disabled'
//  '<S54>'  : 'uav_track_ugv/Discrete PID Controller/Tracking Mode/Disabled'
//  '<S55>'  : 'uav_track_ugv/Discrete PID Controller/Tracking Mode Sum/Passthrough'
//  '<S56>'  : 'uav_track_ugv/Discrete PID Controller/Tsamp - Integral/Passthrough'
//  '<S57>'  : 'uav_track_ugv/Discrete PID Controller/Tsamp - Ngain/Passthrough'
//  '<S58>'  : 'uav_track_ugv/Discrete PID Controller/postSat Signal/Forward_Path'
//  '<S59>'  : 'uav_track_ugv/Discrete PID Controller/preSat Signal/Forward_Path'
//  '<S60>'  : 'uav_track_ugv/Subscribe/Enabled Subsystem'
//  '<S61>'  : 'uav_track_ugv/Subscribe1/Enabled Subsystem'

#endif                                 // RTW_HEADER_uav_track_ugv_h_

//
// File trailer for generated code.
//
// [EOF]
//
